package com.dongdong.bookstore.module.ums.service;

import com.dongdong.bookstore.module.ums.model.Admin;
import com.dongdong.bookstore.module.ums.model.Menu;
import com.dongdong.bookstore.module.ums.model.Resource;

import java.util.List;

/**
 * @author chiangkai
 * @date 2021-10-24
 * @email chiangkk@163.com
 */
public interface UmsCacheService {
    /**
     * 删除后台用户缓存
     */
    void delAdmin(Long adminId);

    /**
     * 删除后台用户缓存
     */
    void delAdmin(String username);

    /**
     * 删除后台用户资源列表缓存
     */
    void delResourceList(Long adminId);

    /**
     * 当角色相关资源信息改变时删除相关后台用户缓存
     */
    void delResourceListByRole(Long roleId);

    /**
     * 当角色相关资源信息改变时删除相关后台用户缓存
     */
    void delResourceListByRoleIds(List<Long> roleIds);

    /**
     * 当资源信息改变时，删除资源项目后台用户缓存
     */
    void delResourceListByResource(Long resourceId);

    /**
     * 获取缓存后台用户信息
     */
    Admin getAdmin(String username);

    /**
     * 设置缓存后台用户信息
     */
    void setAdmin(Admin admin);

    /**
     * 获取缓存后台用户资源列表
     */
    List<Resource> getResourceList(Long adminId);

    /**
     * 设置后台后台用户资源列表
     */
    void setResourceList(Long adminId, List<Resource> resourceList);

    /**
     * 获取缓存所有需要验证用户资源的路径
     */
    List<Resource> getResourceListAll();

    /**
     * 清楚缓存所有需要验证用户资源的路径
     */
    void clearResourcesListAll();

    /**
     * 设置缓存所有需要验证用户资源的路径
     */
    void setResourceListAll(List<Resource> resourceList);

    /**
     * 设置用户菜单缓存
     */
    List<Menu> getMenuListByAdminId(Long adminId);

    /**
     * 设置用户菜单缓存
     */
    void setMenuListByAdminId(Long adminId, List<Menu> menuList);

    /**
     * 清楚用户菜单缓存
     */
    void clearMenuListByAdminId(Long adminId);

    void clearMenuListAll();

}
